Verschachteln: Modul → Pack
Ein Kind einer Baugruppe darf selbst eine Baugruppe sein – der Baum ist wörtlich gemeint:
def pack(p: ModulParam, n_module: int = 2) -> cq.Assembly:
packung = cq.Assembly(name="pack")
for i in range(n_module):
packung.add(modul(p), name=f"modul_{i}", loc=cf.Location((0, i * 130, 0)))
return packung
print([c.name for c in pack(ModulParam()).children])
Die Lage komponiert den Baum hinab: jedes Modul wird einmal platziert, seine Zellen bleiben relativ dazu.